﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DAL;
using BL;

namespace QuanLyCHTrangSuc
{
    public partial class frmThemMoiSanPham : Form
    {
        DanhMucLoaiSanPhamBL dmLoaiSanPhamBL = new DanhMucLoaiSanPhamBL();
        NhaSanXuatBL nhaSanXuatBL = new NhaSanXuatBL();
        SanPhamBL sanPhamBL = new SanPhamBL();

        List<DanhMucLoaiSanPhamDAL> dmLoaiSanPham = new List<DanhMucLoaiSanPhamDAL>();
        List<NhaSanXuatDAL> dsnsx = new List<NhaSanXuatDAL>();

        SanPhamDAL sanPham = new SanPhamDAL();

        private bool duocChonTab = false;
        private bool daLuu = false;

        private void NapDuLieuVaoCbbNhomSanPham()
        {
            dmLoaiSanPham = dmLoaiSanPhamBL.LayDanhMucLoaiSanPham();
            cbbNhomSanPham.DataSource = dmLoaiSanPham;
            cbbNhomSanPham.DisplayMember = "TenLoaiSanPham";
            cbbNhomSanPham.ValueMember = "MaLoaiSanPham";
        }

        private void NapDuLieuVaoCbbNhaSanXuat()
        {
            dsnsx = nhaSanXuatBL.LayDanhSachNhaSanXuat();
            cbbNhaSanXuat.DataSource = dsnsx;
            cbbNhaSanXuat.DisplayMember = "TenNhaSanXuat";
            cbbNhaSanXuat.ValueMember = "MaNhaSanXuat";
        }

        public frmThemMoiSanPham()
        {
            InitializeComponent();
        }

        private void frmThemMoiSanPham_Load(object sender, EventArgs e)
        {
            NapDuLieuVaoCbbNhaSanXuat();
            NapDuLieuVaoCbbNhomSanPham();
        }

        private void cbbNhomSanPham_SelectedIndexChanged(object sender, EventArgs e)
        {
            DanhMucLoaiSanPhamDAL loaiSanPham = (DanhMucLoaiSanPhamDAL)cbbNhomSanPham.SelectedItem;
            string thongSoKyThuat = loaiSanPham.ThongTinRieng;
            XL_XML.ChuoiXML = thongSoKyThuat;
            XL_XML.DocTaiLieu();
            XL_XML.XuatRaLuoi("/THONGSOKYTHUAT/THONGSO", gridThongSoKyThuat);
        }

        private void btnChon_Click(object sender, EventArgs e)
        {
            OpenFileDialog hopThoai = new OpenFileDialog();
            hopThoai.Multiselect = false;
            hopThoai.InitialDirectory = "C:\\";
            hopThoai.RestoreDirectory = true;
            hopThoai.Filter = "Image Files (*.gif;*.jpg;*.jpeg;*.bmp;*.png)|*.gif;*.jpg;*.jpeg;*.bmp;*.png";
            if (hopThoai.ShowDialog() == DialogResult.OK)
            {
                txtHinhAnh.Text = hopThoai.FileName;
                pictureBox.Image = Image.FromFile(hopThoai.FileName);
            }
            else
            {
                return;
            }
        }

        private int KiemTraKhaNangTiep()
        {
            if (txtTen.Text == null || txtTen.Text.Length == 0)
                return -1;
            if (cbbNhaSanXuat.SelectedValue == null)
            {
                if (cbbNhaSanXuat.Text.Length == 0)
                    return -2;
                return 0;
            }
            return 1;
        }

        private void btnTiep_Click(object sender, EventArgs e)
        {
            int kt = KiemTraKhaNangTiep();
            switch (kt)
            {
                case -1:
                    MessageBox.Show("Chưa nhập tên sản phẩm.", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                case -2:
                    MessageBox.Show("Chưa nhập nhà sản xuất.", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                case 0:
                    DialogResult kq = MessageBox.Show(cbbNhaSanXuat.Text + " chưa có trong danh sách nhà sản xuất. Bạn có muốn thêm nhà sản xuất này?",
                        "Nhắc nhở", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                    if (kq == DialogResult.Yes)
                    {
                        /*
                        NhaSanXuatDTO nhaSanXuatMoi = new NhaSanXuatDTO();
                        nhaSanXuatMoi.TenNhaSanXuat = cbbNhaSanXuat.Text;
                        if (!nhaSanXuatCLT.ThemMoiNhaSanXuat(nhaSanXuatMoi))
                        {
                            MessageBox.Show("Xảy ra lỗi trong quá trình ghi dữ liệu.", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            return;
                        }

                        NapDuLieuVaoCbbNhaSanXuat();
                        cbbNhaSanXuat.SelectedValue = nhaSanXuatCLT.LayMNSXNhapCuoi();
                        */
                    }
                    else if (kq == DialogResult.No)
                    {
                        return;
                    }
                    break;
            }

            sanPham.MaSanPham = txtMaSanPham.Text.ToString();
            sanPham.TenSanPham = txtTen.Text;
            sanPham.HinhAnh = txtHinhAnh.Text;
            sanPham.MaNhaSanXuat = (string)cbbNhaSanXuat.SelectedValue;
            sanPham.MaLoaiSanPham = (string)cbbNhomSanPham.SelectedValue;
            sanPham.SanPhamMoi = true;
            sanPham.GiaBan = int.Parse(txtGiaBan.Text);
            sanPham.GiaMua = 0;
            sanPham.PhanTramKM = float.Parse(txtphantram.Text);
            sanPham.ThongTinMoTa = txtThongTinMoTa.Text;
            sanPham.SoLuongTon = int.Parse(txtSoLuong.Text);
            sanPham.TinhTrang = true;

            duocChonTab = true;
            tabControl.SelectedIndex = 1;
        }

        private void tabControl_Selecting(object sender, TabControlCancelEventArgs e)
        {
            if (duocChonTab == false)
                e.Cancel = true;
            duocChonTab = false;
        }

        private void btnLuu_Click(object sender, EventArgs e)
        {
            XL_XML.NhapTuLuoi(gridThongSoKyThuat);
            string thongSoKyThuat = XL_XML.GhiTaiLieu();
            sanPham.ThongSoKyThuat = thongSoKyThuat;

            if (sanPhamBL.ThemSanPhamMoi(sanPham))
            {
                MessageBox.Show("Lưu thành công.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                MessageBox.Show("Có lỗi xảy ra trong quá trình ghi dữ liệu.", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            this.daLuu = true;
        }

        private void btnTroLai_Click(object sender, EventArgs e)
        {
            duocChonTab = true;
            tabControl.SelectedIndex = 0;
        }

        private void btnThoat2_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnThoat1_Click(object sender, EventArgs e)
        {
            this.Close();            
        }

        private void frmThemMoiSanPham_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (this.daLuu || tabControl.SelectedIndex == 0)
                return;

            DialogResult kq = MessageBox.Show("Bạn có muốn nhập sản phẩm này không?",
                "Nhắc nhở",
                MessageBoxButtons.YesNoCancel,
                MessageBoxIcon.Question,
                MessageBoxDefaultButton.Button3);

            if (kq == DialogResult.Yes)
            {
                XL_XML.NhapTuLuoi(gridThongSoKyThuat);
                string thongSoKyThuat = XL_XML.GhiTaiLieu();
                sanPham.ThongSoKyThuat = thongSoKyThuat;
                sanPhamBL.ThemSanPhamMoi(sanPham);
            }
            else if (kq == DialogResult.No)
            {
                return;
            }
            else if (kq == DialogResult.Cancel)
            {
                e.Cancel = true;
            }
        }

    }
}
